template<typename T> T* RBSingleton<T>::ms_pSingleton = 0;

/**
**************************************************************************************************************************
* RBSingleton's Constructor
**************************************************************************************************************************/
template<typename T> RBSingleton<T>::RBSingleton()
{
    RBAssert(ms_pSingleton == 0, "Singleton already created !");
    ms_pSingleton = (T*)this;
}



/**
**************************************************************************************************************************
* RBSingleton's Destructor
**************************************************************************************************************************/
template<typename T> RBSingleton<T>::~RBSingleton()
{
    RBAssert(ms_pSingleton != 0, "Singleton already destroyed !");
    ms_pSingleton = 0;
}

/**************************************************************************************************************************************************************
 * Getting singleton
 **************************************************************************************************************************************************************/
template<class T>
T* RBSingleton<T>::GetSingleton()
{
    return ms_pSingleton;
}
